Migrate some RegExs to QRegularExpression. (#632)
authortsteven4 <13596209+tsteven4@users.noreply.github.com>
Sat, 22 Aug 2020 11:56:53 +0000 (05:56 -0600)
committerGitHub <noreply@github.com>
Sat, 22 Aug 2020 11:56:53 +0000 (05:56 -0600)
QRegExp will be/is deprecated.

exif.cc
pcx.cc
xcsv.cc

diff --git a/exif.cc b/exif.cc
index 2164151dc90cd9ed9fee4c5232ac2e1a0cbe37ef..d2f71a7f516046c265a182ad57846b0a81e42c27 100644 (file)
--- a/exif.cc
+++ b/exif.cc
  */
 
 #include "defs.h"
-#include "garmin_tables.h"         // for gt_lookup_datum_index
-#include "gbfile.h"                // for gbfile, gbfclose, gbfcopyfrom, gbfseek, gbfwrite, gbfopen_be, gbftell, gbfputuint16, gbfputuint32, gbfgetuint16, gbfgetuint32, gbfread, gbfrewind, gbfgetflt
-#include "jeeps/gpsmath.h"         // for GPS_Math_WGS84_To_Known_Datum_M
-#include "src/core/datetime.h"     // for DateTime
-#include <QtCore/QByteArray>       // for QByteArray
-#include <QtCore/QDate>            // for QDate
-#include <QtCore/QDateTime>        // for QDateTime
-#include <QtCore/QFile>            // for QFile
-#include <QtCore/QFileInfo>        // for QFileInfo
-#include <QtCore/QList>            // for QList<>::iterator, QList
-#include <QtCore/QPair>            // for QPair
-#include <QtCore/QRegExp>          // for QRegExp
-#include <QtCore/QString>          // for QString
-#include <QtCore/QTextCodec>       // for QTextCodec
-#include <QtCore/QTime>            // for QTime
-#include <QtCore/QVariant>         // for QVariant
-#include <QtCore/QVector>          // for QVector
-#include <QtCore/Qt>               // for UTC, ISODate
-#include <QtCore/QtGlobal>         // for qPrintable
-#include <algorithm>               // for sort, min
-#include <cassert>                 // for assert
-#include <cctype>                  // for isprint, isspace
-#include <cfloat>                  // for DBL_EPSILON
-#include <cmath>                   // for fabs, modf, copysign, round, fmax
-#include <cstdint>                 // for int32_t, int16_t, uint16_t, uint32_t, uint8_t, INT32_MAX
-#include <cstdio>                  // for printf, snprintf, SEEK_SET, SEEK_CUR
-#include <cstdlib>                 // for labs, atoi
-#include <cstring>                 // for strrchr, memcmp, strchr, strlen
+#include "garmin_tables.h"                 // for gt_lookup_datum_index
+#include "gbfile.h"                        // for gbfputuint32, gbfputuint16, gbfgetuint16, gbfgetuint32, gbfile, gbfseek, gbftell, gbfclose, gbfcopyfrom, gbfwrite, gbfopen_be, gbfread, gbfrewind, gbfgetflt, gbfgetint16, gbfopen, gbfputc, gbfputflt, gbsize_t, gbfeof, gbfgetdbl, gbfputdbl, gbfile...
+#include "jeeps/gpsmath.h"                 // for GPS_Math_WGS84_To_Known_Datum_M
+#include "src/core/datetime.h"             // for DateTime
+
+#include <QtCore/QByteArray>               // for QByteArray
+#include <QtCore/QDate>                    // for QDate
+#include <QtCore/QDateTime>                // for QDateTime
+#include <QtCore/QFile>                    // for QFile
+#include <QtCore/QFileInfo>                // for QFileInfo
+#include <QtCore/QList>                    // for QList<>::iterator, QList
+#include <QtCore/QPair>                    // for QPair
+#include <QtCore/QRegularExpression>       // for QRegularExpression
+#include <QtCore/QRegularExpressionMatch>  // for QRegularExpressionMatch
+#include <QtCore/QString>                  // for QString
+#include <QtCore/QTextCodec>               // for QTextCodec
+#include <QtCore/QTime>                    // for QTime
+#include <QtCore/QVariant>                 // for QVariant
+#include <QtCore/QVector>                  // for QVector
+#include <QtCore/Qt>                       // for UTC, ISODate
+#include <QtCore/QtGlobal>                 // for qSwap, qPrintable, qint64
+
+#include <algorithm>                       // for sort, min
+#include <cassert>                         // for assert
+#include <cctype>                          // for isprint, isspace
+#include <cfloat>                          // for DBL_EPSILON
+#include <cmath>                           // for fabs, modf, copysign, round, fmax
+#include <cstdint>                         // for uint32_t, int32_t, uint16_t, uint8_t, int16_t, INT32_MAX
+#include <cstdio>                          // for printf, SEEK_SET, snprintf, SEEK_CUR
+#include <cstdlib>                         // for labs, atoi
+#include <cstring>                         // for memcmp, strlen
 
 #define MYNAME "exif"
 
@@ -773,11 +776,13 @@ exif_get_exif_time(ExifApp* app)
     if (offset_tag) {
       char* time_tag = exif_read_str(offset_tag);
       // string should be +HH:MM or -HH:MM
-      QRegExp re("([+-])(\\d{2})(?::)(\\d{2})");
-      if (re.exactMatch(time_tag)) {
+      const QRegularExpression re(R"(^([+-])(\d{2}):(\d{2})$)");
+      assert(re.isValid());
+      QRegularExpressionMatch match = re.match(time_tag);
+      if (match.hasMatch()) {
         // Correct the date time by supplying the offset from UTC.
-        int offset_hours = re.cap(1).append(re.cap(2)).toInt();
-        int offset_mins = re.cap(1).append(re.cap(3)).toInt();
+        int offset_hours = match.captured(1).append(match.captured(2)).toInt();
+        int offset_mins = match.captured(1).append(match.captured(3)).toInt();
         res.setOffsetFromUtc(((offset_hours * 60) + offset_mins) * 60);
       }
     }
diff --git a/pcx.cc b/pcx.cc
index 0ced2de88ef5315c0270a43641dfdea4850e3627..cf5dd78392db6499bf41004df38a8dcc7bfcb2f7 100644 (file)
--- a/pcx.cc
+++ b/pcx.cc
     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
 
+#include <cmath>                      // for fabs
+#include <cstdlib>                    // for atoi
+#include <cstring>                    // for strstr, strncmp
+
+#include <QtCore/QChar>               // for operator==, QChar
+#include <QtCore/QCharRef>            // for QCharRef
+#include <QtCore/QDate>               // for QDate
+#include <QtCore/QDateTime>           // for QDateTime
+#include <QtCore/QList>               // for QList
+#include <QtCore/QRegularExpression>  // for QRegularExpression
+#include <QtCore/QString>             // for QString, QString::KeepEmptyParts, QString::SectionSkipEmpty
+#include <QtCore/QStringList>         // for QStringList
+#include <QtCore/QStringRef>          // for QStringRef
+#include <QtCore/QTime>               // for QTime
+#include <QtCore/QVector>             // for QVector
+#include <QtCore/Qt>                  // for CaseInsensitive, UTC
+
 #include "defs.h"
-#include "cet_util.h"
-#include "csv_util.h"
-#include "garmin_tables.h"
-#include <QtCore/QDebug>
-#include <cmath>
-#include <cstdio>
-#include <cstdlib>
+#include "cet_util.h"                 // for cet_convert_init
+#include "csv_util.h"                 // for human_to_dec
+#include "garmin_tables.h"            // for gt_find_icon_number_from_desc, PCX, gt_find_desc_from_icon_number
+#include "gbfile.h"                   // for gbfprintf, gbfclose, gbfopen, gbfgetstr, gbfile
+#include "src/core/datetime.h"        // for DateTime
+
 
 static gbfile* file_in, *file_out;
 static short_handle mkshort_handle;
@@ -71,7 +87,7 @@ static void wr_deinit() {
 // Find the first token in string |in| when there may be leading whitespace.
 // These files have weird mixtures of spaces and tabs.
 static QString FirstTokenAt(const QString& in, int index) {
-  static const QRegExp sep("\\s+");
+  static const QRegularExpression sep(QRegularExpression(R"(\s+)"));
   return in.mid(index, -1).section(sep, 0, 0, QString::SectionSkipEmpty);
 }
 
@@ -104,6 +120,7 @@ static void data_read() {
 
   read_as_degrees = 0;
   int points = 0;
+  const QRegularExpression sep(QRegularExpression(R"(\s+)"));
 
   // Each line is both |buff| as a C string and |line| as a QString.
   while ((buff = gbfgetstr(file_in))) {
@@ -116,7 +133,7 @@ static void data_read() {
     switch (ibuf[0]) {
       case 'W': {
         QStringList tokens =
-            line.split(QRegExp("\\s+"), QString::KeepEmptyParts);
+            line.split(sep, QString::KeepEmptyParts);
         if (tokens.size() < 6) {
           fatal(MYNAME
                 ": Unable to parse waypoint, not all required columns "
@@ -216,7 +233,7 @@ static void data_read() {
         break;
       case 'T': {
         QStringList tokens =
-            line.split(QRegExp("\\s+"), QString::KeepEmptyParts);
+            line.split(sep, QString::KeepEmptyParts);
         if (tokens.size() < 6) {
           fatal(MYNAME
                 ": Unable to parse trackpoint, not all required columns "
diff --git a/xcsv.cc b/xcsv.cc
index babc01d31a6210264b09e67d2ff26c79dcce8500..9b390729230fac7af436b4d1bbeb88f25d1a5189 100644 (file)
--- a/xcsv.cc
+++ b/xcsv.cc
 
  */
 
-#include <cassert>                 // for assert
-#include <cctype>                  // for isdigit, tolower
-#include <cmath>                   // for fabs, pow
-#include <cstdio>                  // for snprintf, sscanf
-#include <cstdlib>                 // for atof, atoi, strtod, atol
-#include <cstring>                 // for strlen, strncmp, strcmp, strncpy, memset
-#include <ctime>                   // for gmtime, localtime, mktime, strftime
-
-#include <QtCore/QByteArray>       // for QByteArray
-#include <QtCore/QChar>            // for QChar
-#include <QtCore/QCharRef>         // for QCharRef
-#include <QtCore/QDate>            // for QDate
-#include <QtCore/QDateTime>        // for QDateTime
-#include <QtCore/QHash>            // for QHash
-#include <QtCore/QIODevice>        // for operator|, QIODevice::ReadOnly, QIODevice::Text, QIODevice::WriteOnly
-#include <QtCore/QList>            // for QList
-#include <QtCore/QRegExp>          // for QRegExp
-#include <QtCore/QString>          // for QString, operator+, operator==, QByteArray::append
-#include <QtCore/QStringList>      // for QStringList
-#include <QtCore/QTextStream>      // for QTextStream
-#include <QtCore/QTime>            // for QTime
-#include <QtCore/QtGlobal>         // for qAsConst, QAddConst<>::Type, qPrintable
+#include <cassert>                    // for assert
+#include <cctype>                     // for isdigit, tolower
+#include <cmath>                      // for fabs, pow
+#include <cstdio>                     // for snprintf, sscanf
+#include <cstdlib>                    // for atof, atoi, strtod
+#include <cstring>                    // for strlen, strncmp, strcmp, memset
+#include <ctime>                      // for gmtime, localtime, time_t, mktime, strftime
+
+#include <QtCore/QByteArray>          // for QByteArray
+#include <QtCore/QChar>               // for QChar
+#include <QtCore/QDate>               // for QDate
+#include <QtCore/QDateTime>           // for QDateTime
+#include <QtCore/QDebug>              // for QDebug
+#include <QtCore/QHash>               // for QHash
+#include <QtCore/QIODevice>           // for QIODevice, operator|, QIODevice::ReadOnly, QIODevice::Text, QIODevice::WriteOnly
+#include <QtCore/QList>               // for QList
+#include <QtCore/QRegularExpression>  // for QRegularExpression
+#include <QtCore/QString>             // for QString, operator+, operator==
+#include <QtCore/QStringList>         // for QStringList
+#include <QtCore/QTextStream>         // for QTextStream
+#include <QtCore/QtGlobal>            // for qAsConst, qPrintable
 
 #include "defs.h"
-#include "csv_util.h"              // for csv_stringtrim, dec_to_human, csv_stringclean, human_to_dec, ddmmdir_to_degrees, dec_to_intdeg, decdir_to_dec, intdeg_to_dec, csv_linesplit
-#include "garmin_fs.h"             // for garmin_fs_t, garmin_fs_flags_t, GMSD_FIND, GMSD_GET, GMSD_SET, garmin_fs_alloc
-#include "gbfile.h"                // for gbfgetstr, gbfclose, gbfopen, gbfile
-#include "grtcirc.h"               // for RAD, gcdist, radtomiles
-#include "jeeps/gpsmath.h"         // for GPS_Math_WGS84_To_UTM_EN, GPS_Lookup_Datum_Index, GPS_Math_Known_Datum_To_WGS84_M, GPS_Math_UTM_EN_To_Known_Datum, GPS_Math_WGS84_To_Known_Datum_M, GPS_Math_WGS84_To_UKOSMap_M
-#include "jeeps/gpsport.h"         // for int32
-#include "session.h"               // for session_t
-#include "src/core/datetime.h"     // for DateTime
-#include "src/core/logging.h"      // for Warning, Fatal
-#include "src/core/optional.h"     // for optional
-#include "src/core/textstream.h"
-#include "strptime.h"              // for strptime
+#include "csv_util.h"                 // for csv_stringtrim, dec_to_human, csv_stringclean, human_to_dec, ddmmdir_to_degrees, dec_to_intdeg, decdir_to_dec, intdeg_to_dec, csv_linesplit
+#include "formspec.h"                 // for FormatSpecificDataList
+#include "garmin_fs.h"                // for garmin_fs_t, garmin_fs_alloc
+#include "gbfile.h"                   // for gbfgetstr, gbfclose, gbfopen, gbfile
+#include "grtcirc.h"                  // for RAD, gcdist, radtomiles
+#include "jeeps/gpsmath.h"            // for GPS_Math_WGS84_To_UTM_EN, GPS_Lookup_Datum_Index, GPS_Math_Known_Datum_To_WGS84_M, GPS_Math_UTM_EN_To_Known_Datum, GPS_Math_WGS84_To_Known_Datum_M, GPS_Math_WGS84_To_UKOSMap_M
+#include "jeeps/gpsport.h"            // for int32
+#include "session.h"                  // for session_t
+#include "src/core/datetime.h"        // for DateTime
+#include "src/core/logging.h"         // for FatalMsg
+#include "src/core/optional.h"        // for optional
+#include "src/core/textstream.h"      // for TextStream
+#include "strptime.h"                 // for strptime
 #include "xcsv.h"
 
 
@@ -163,7 +163,7 @@ enum xcsv_token {
   XT_YYYYMMDD_TIME
 };
 
-#include "xcsv_tokens.gperf"       // for Perfect_Hash, xt_mapping
+#include "xcsv_tokens.gperf"          // for Perfect_Hash, xt_mapping
 
 /* a table of config file constants mapped to chars */
 const XcsvStyle::char_map_t XcsvStyle::xcsv_char_table[] = {
@@ -1659,7 +1659,7 @@ XcsvStyle::xcsv_parse_style_line(XcsvStyle* style, QString line)
   }
 
   // Separate op and tokens.
-  int sep = line.indexOf(QRegExp("\\s+"));
+  int sep = line.indexOf(QRegularExpression(R"(\s+)"));
 
   // the first token is the operation, e.g. "IFIELD"
   QString op = line.mid(0, sep).trimmed().toUpper();